#include "stdTcp.h"
#include <stdio.h>
#include "GlobalMessage.h"// 客户端加线程
#include "StdThread.h"
#include <string.h>
#include <unistd.h>
#include <stdlib.h>



#define ip "172.29.0.125"
#define port 8080

static char MyName[NameSize];

void login(TcpC * c)
{
    MSG m;
    m.flag = LOGIN;// 注册用户名
    printf("请输入你的用户名：\n");
    scanf("%s", m.FromName);
    strcpy(MyName, m.FromName);
    TcpClientSend(c, &m, sizeof(m));

}

MSG ChatToClient()
{
    MSG m;
    printf("请输入你要发送的用户名称：\n");
    scanf("%s", m.ToName);
    printf("请输入你要发送的信息：\n");
    scanf("%s", m.Content);

    strcpy(m.FromName, MyName);
    return m;
}

// 专门处理来自服务器的消息
void * ThreadHandle(void * arg)
{
    // 里面需要收到消息
    TcpC *c = (TcpC *)arg;
    while(1)
    {
        MSG m;
        if (TcpClientRecv(c, &m, sizeof(m)) == false)
        {
            printf("读线程接收错误\n");
            exit(-1);// 直接退掉整个进程
        }
        printf("接收到来自[%s]的消息：%s\n", m.FromName, m.Content);
    }
    
}

int main()
{
    TcpC *c = TcpClientInit(ip, port);

    login(c);

    // 在注册之后开这条线程，才有这条信息
    Thread *t = ThreadInit(ThreadHandle, c);

    while (1)
    {
        MSG m = ChatToClient();
        if (TcpClientSend(c, &m, sizeof(m)) == false)
        {
            perror("send error");
            return -1;
        }
    }

    return 0;
}
